#ifndef FLYWEIGHT_H__
#define FLYWEIGHT_H__

//include header

//using namespace


namespace npFlyweight
{
    //class forward declaration

    class Flyweight // class inheritance
    {
        //friend
        
        //embedded type
        
        public: Flyweight();
        public: virtual ~Flyweight();
        public: Flyweight(const Flyweight& cpy);
        public: Flyweight& operator=(const Flyweight& asn);
        public: Flyweight(Flyweight&& mov) noexcept;
        public: Flyweight& operator=(Flyweight&& mva) noexcept;
        public: virtual Flyweight* clone() const;

        //other constructors

        //public methods
        public: virtual void operate(int n) throw() = 0;

        //protected methods

        //private methods

        //protected data

        //private data

        //others
    };
} // namespace npFlyweight


#endif //FLYWEIGHT_H__
